import request from '@/utils/request'

// 字典子项API接口集合
const dictItemApi = {
  // 分页查询字典子项列表
  list: '/system/dictItem/list',
  // 根据字典类型查询子项
  getByType: '/system/dictItem/type/',
  // 导出字典子项数据
  export: '/system/dictItem/export',
  // 根据ID查询字典子项详情
  get: '/system/dictItem/',
  // 新增字典子项
  add: '/system/dictItem',
  // 修改字典子项
  update: '/system/dictItem',
  // 批量删除字典子项
  batchRemove: '/system/dictItem/'
}

/**
 * 分页查询字典子项列表
 * @param {Object} queryParams - 查询参数
 * @returns {Promise} - axios请求Promise对象
 */
export function listDictItem(queryParams) {
  return request({
    url: dictItemApi.list,
    method: 'get',
    params: queryParams
  })
}

/**
 * 根据字典类型查询子项列表
 * @param {String} dictType - 字典类型
 * @returns {Promise} - axios请求Promise对象
 */
export function getDictItemByType(dictType) {
  return request({
    url: dictItemApi.getByType + dictType,
    method: 'get'
  })
}

/**
 * 导出字典子项数据
 * @param {Object} queryParams - 查询参数
 * @returns {Promise} - axios请求Promise对象
 */
export function exportDictItem(queryParams) {
  return request({
    url: dictItemApi.export,
    method: 'get',
    params: queryParams,
    responseType: 'blob'
  })
}

/**
 * 根据ID查询字典子项详情
 * @param {Number} itemId - 子项ID
 * @returns {Promise} - axios请求Promise对象
 */
export function getDictItem(itemId) {
  return request({
    url: dictItemApi.get + itemId,
    method: 'get'
  })
}

/**
 * 新增字典子项
 * @param {Object} data - 字典子项数据
 * @returns {Promise} - axios请求Promise对象
 */
export function addDictItem(data) {
  return request({
    url: dictItemApi.add,
    method: 'post',
    data: data
  })
}

/**
 * 修改字典子项
 * @param {Object} data - 字典子项数据
 * @returns {Promise} - axios请求Promise对象
 */
export function updateDictItem(data) {
  return request({
    url: dictItemApi.update,
    method: 'put',
    data: data
  })
}

/**
 * 删除字典子项
 * @param {Number} itemId - 子项ID
 * @returns {Promise} - axios请求Promise对象
 */
export function deleteDictItem(itemId) {
  return request({
    url: dictItemApi.batchRemove + itemId,
    method: 'delete'
  })
}

/**
 * 批量删除字典子项
 * @param {Array} itemIds - 子项ID数组
 * @returns {Promise} - axios请求Promise对象
 */
export function batchDeleteDictItem(itemIds) {
  return request({
    url: dictItemApi.batchRemove + itemIds.join(','),
    method: 'delete'
  })
}

export default {
  listDictItem,
  getDictItemByType,
  exportDictItem,
  getDictItem,
  addDictItem,
  updateDictItem,
  deleteDictItem,
  batchDeleteDictItem
}
